domain: delete broken but unused __has_common_domain#2021
domain: delete broken but unused __has_common_domain#2021ericniebler merged 1 commit intoNVIDIA:mainfrom
__has_common_domain#2021Conversation
|
@ericniebler I am not sure I actually understand what In the following, I expected that Are you expecting people writing new domains to specialize struct Whatever {};
struct SomeDomain : public STDEXEC::default_domain {};
struct SomeOtherDomain : public STDEXEC::default_domain {};
struct WontBeGoodDomain : public STDEXEC::default_domain, public Whatever {};
static_assert(STDEXEC::__has_common_domain<SomeDomain, SomeOtherDomain>);
static_assert(STDEXEC::__has_common_domain<SomeDomain, WontBeGoodDomain>);
static_assert(!std::same_as<STDEXEC::__common_domain_t<SomeDomain, SomeOtherDomain>, STDEXEC::default_domain>); // unexpected... ?
static_assert(std::same_as<STDEXEC::__common_domain_t<SomeDomain, WontBeGoodDomain>, STDEXEC::indeterminate_domain<WontBeGoodDomain, SomeDomain>>); |
|
And just to clarify, it seems that struct Whatever {};
struct ThisIsNotADog {};
struct SomeDomain : public STDEXEC::default_domain {};
struct SomeOtherDomain : public STDEXEC::default_domain {};
struct WontBeGoodDomain : public STDEXEC::default_domain, public Whatever {};
static_assert(STDEXEC::__has_common_domain<Whatever, SomeOtherDomain>);
static_assert(STDEXEC::__has_common_domain<Whatever, ThisIsNotADog>);
static_assert(STDEXEC::__has_common_domain<Whatever, STDEXEC::default_domain>);
static_assert(STDEXEC::__has_common_domain<SomeDomain, SomeOtherDomain>);
static_assert(STDEXEC::__has_common_domain<SomeDomain, STDEXEC::default_domain>);
static_assert(STDEXEC::__has_common_domain<SomeDomain, SomeDomain>);
static_assert(STDEXEC::__has_common_domain<SomeDomain, WontBeGoodDomain>);
static_assert(STDEXEC::__has_common_domain<int, double>);
static_assert(STDEXEC::__has_common_domain<int, int>); |
|
yeah,
yes, that's not expected. this is what happens when i rush. i suppose it's to be expected that i would make mistakes with my 11th-hr fix for customization. i'll address that problem in my own pr, and file an LWG issue. |
|
/ok to test 969f7e6 |
__has_common_domainincorrectly returnstruefor domain pairs whose common type isindeterminate_domain<...>.For example:
It could be fixed by checking that the result is not an instance of
indeterminate_domain, but since__has_common_domainis never used, let's get rid of it.